1、介绍
	KFIFO是内核提供的一个先进先出队列，它采用了无锁并发机制，在一个线程写一个线程读时无需考虑并发。
问题，另外它的读写都是以元素大小为单位
3、定义一个FIFO
	DECLARE_KFIFO宏可定义一个FIFO句柄及其对应的缓存，FIFO句柄和对应的缓存均采用静态分配。
4、初始化DECLARE_KFIFO定义的FIFO
	INIT_KFIFO宏可以用来完成对DECLARE_KFIFO宏定义的FIFO进行初始化。
2、定义并初始化FIFO
	DEFINE_KFIFO宏可定义一个FIFO句柄及其对应的缓存，并对FIFO进行初始化。
4、定义一个指针FIFO
	DECLARE_KFIFO_PTR宏用于定义FIFO句柄，它没有为其定义静态缓存，使用时需要用kfifo_init或kfifo_alloc进行初始
化。
5、struct kfifo对象
	struct kfifo是一个兼容性数据结构，可以把其看做一个元素大小为1Byte的FIFO句柄。
6、动态初始化FIFO
	kfifo_init   //采用用户提供buffer初始化DECLARE_KFIFO_PTR或struct kfifo定义的句柄
	kfifo_alloc  //采用kmalloc分配的buffer初始化DECLARE_KFIFO_PTR或struct kfifo定义的句柄
	kfifo_free   //与kfifo_alloc配对使用
7、获取fifo长度
	kfifo_len   //返回有效数据长度
	kfifo_avail //返回剩余空间长度
8、获取fifo状态
	kfifo_is_empty  //fifo是否满
	kfifo_is_full   //fifo是否空
9、入队
	kfifo_in        //将内核的数据入队
	kfifo_from_user //将应用层的数据入队
10、出队
	kfifo_out       //出队到内核
	kfifo_to_user   //出队到应用层
